package com.sojson.util.json;

import java.util.List;
import java.util.Map;

/**
 * Json工具类接口
 * 
 * @author liu
 * @date 2020-08-26
 */
public interface JsonUtilInterface {

    /**
     * 将对象转换成json字符串(值为空的不解析)
     * 
     * @param data 被转换的对象
     * @return 得到的字符串
     */
    String objectToJson(Object data);

    /**
     * 将对象转换成json字符串(值为空的也解析)
     * 
     * @param data 被转换的对象
     * @return 得到的字符串
     */
    String objectToJsonAll(Object data);

    /**
     * 将json字符串转换成对象
     * 
     * @param jsonData json字符串
     * @param beanType 要转换成的对象的类型
     * @return 得到的对象
     */
    <T> T jsonToObject(String jsonData, Class<T> beanType);

    /**
     * 将json数据转换成指定类型的list
     * 
     * @param <T>
     * @param jsonData json字符串
     * @param beanType 要转换成的list的类型
     * @return 得到的list
     */
    <T> List<T> jsonToList(String jsonData, Class<T> beanType);

    /**
     * 将json数据转换成指定类型的map
     * 
     * @param <T> Map的Key
     * @param <K> Map的Value
     * @param jsonData json字符串
     * @param keyType 要转换成的map的key的类型
     * @param valueType 要转换成的map的value的类型
     * @return 得到的Map
     */
    <T, K> Map<T, K> jsonToMap(String jsonData, Class<T> keyType, Class<K> valueType);

}